Anti-forgery Tokens এবং Security

Microsoft Technologies - ডট নেট কোর (Dot.Net Core) ফর্ম এবং ডেটা ভ্যালিডেশন (Forms and Data Validation) |
200
200

Anti-forgery Tokens (অ্যান্টি-ফর্গারি টোকেন) হল একটি নিরাপত্তা প্রযুক্তি যা ওয়েব অ্যাপ্লিকেশনগুলিতে Cross-Site Request Forgery (CSRF) আক্রমণ প্রতিরোধ করতে ব্যবহৃত হয়। CSRF আক্রমণের মাধ্যমে একজন আক্রমণকারী ব্যবহারকারীর অধিকার নিয়ে অবৈধভাবে একটি রিকোয়েস্ট পাঠাতে পারে, যা সাইটের নিরাপত্তা লঙ্ঘন করে। Anti-forgery tokens এর মাধ্যমে এই ধরনের আক্রমণ প্রতিরোধ করা হয়, এবং এটি ব্যবহারকারীর সেশন নিরাপদ রাখে।


Anti-forgery Token কী?


Anti-forgery Token একটি সিকিউরিটি টোকেন, যা একটি র্যান্ডম এবং ইউনিক স্ট্রিং হিসেবে তৈরি হয় এবং ব্যবহারকারী যখন একটি ফর্ম সাবমিট করে, তখন এটি ফর্ম ডেটার সাথে যুক্ত হয়ে পাঠানো হয়। সার্ভার এই টোকেনটি যাচাই করে নিশ্চিত করে যে রিকোয়েস্টটি আসল ব্যবহারকারীর পক্ষ থেকে এসেছে, এবং কোনো বাহ্যিক আক্রমণকারীর পক্ষ থেকে নয়।

Anti-forgery token মূলত দুইটি অংশে ভাগ করা হয়:

  1. Token Generation: টোকেনটি সাধারণত সার্ভারের পক্ষ থেকে তৈরি করা হয় এবং ক্লায়েন্ট সাইডে ইনক্লুড করা হয় (HTML ফর্মে একটি হিডেন ফিল্ড হিসেবে)।
  2. Token Validation: ফর্ম সাবমিট করার সময় সার্ভার এই টোকেনটি যাচাই করে দেখে, টোকেনটি বৈধ কিনা এবং এটি ব্যবহারকারী থেকে এসেছে কিনা।

Cross-Site Request Forgery (CSRF) কী?


Cross-Site Request Forgery (CSRF) হল এমন একটি আক্রমণ, যেখানে আক্রমণকারী একটি ম্যালিশিয়াস ওয়েবসাইট বা স্ক্রিপ্টের মাধ্যমে একজন ব্যবহারকারীর ব্রাউজারে একটি অবৈধ HTTP রিকোয়েস্ট পাঠাতে পারে। এটি তখন ঘটে যখন ব্যবহারকারী একটি ওয়েবসাইটে লগিন থাকে এবং আক্রমণকারী একটি ভুয়া রিকোয়েস্ট পাঠায় যা সার্ভার গ্রহণ করে, কারণ এটি বৈধ ব্যবহারকারীর কাছ থেকে আসছে বলে মনে হয়।

উদাহরণস্বরূপ, যদি একটি ব্যবহারকারী তার ব্যাংক অ্যাকাউন্টে লগ ইন থাকে, এবং আক্রমণকারী একটি বিশেষভাবে ডিজাইন করা লিঙ্কে ক্লিক করার মাধ্যমে সেই ব্যবহারকারীর পক্ষ থেকে অর্থ স্থানান্তর করার জন্য একটি রিকোয়েস্ট পাঠায়, তবে এটি একটি CSRF আক্রমণ হতে পারে।


Anti-forgery Token এর কাজ কীভাবে করে?


ASP.NET Core একটি built-in anti-forgery মেকানিজম প্রদান করে, যা CSRF আক্রমণ প্রতিরোধে সহায়তা করে। এটি সাধারণত [ValidateAntiForgeryToken] অ্যাট্রিবিউট ব্যবহার করে এবং ফর্ম সাবমিটের জন্য একটি র্যান্ডম টোকেন ব্যবহার করে। এই টোকেনটি সার্ভার এবং ক্লায়েন্টের মধ্যে একটি সিকিউর সম্পর্ক তৈরি করে, যাতে শুধুমাত্র বৈধ রিকোয়েস্টগুলি গ্রহণ করা হয়।

Anti-forgery Token-এর ব্যবহারের সাধারণ ধাপ:

  1. Token Creation: ফর্ম রেন্ডার করার সময় টোকেনটি তৈরি করা হয়। ASP.NET Core এর Razor ভিউ ইঞ্জিনে, _ValidationScriptsPartial ফাইলটি অটোমেটিক্যালি টোকেন ইনক্লুড করে।

    উদাহরণ:

    @using (Html.BeginForm())
    {
        @Html.AntiForgeryToken()  <!-- Anti-forgery token যুক্ত করা -->
        <input type="submit" value="Submit">
    }
    
  2. Token Validation: ফর্ম সাবমিট করার পর, সার্ভার এ টোকেনটি যাচাই করে দেখে, এটি বৈধ কিনা। যদি টোকেনটি ভুল বা অনুপস্থিত হয়, তবে সার্ভার রিকোয়েস্টটি প্রত্যাখ্যান করে এবং 403 (Forbidden) স্ট্যাটাস কোড রিটার্ন করে।

    উদাহরণ:

    [HttpPost]
    [ValidateAntiForgeryToken]
    public IActionResult SubmitForm(FormModel model)
    {
        // ফর্ম ডেটা প্রসেস করা
        return View();
    }
    

    এখানে, [ValidateAntiForgeryToken] অ্যাট্রিবিউটটি গ্যারান্টি দেয় যে ফর্ম সাবমিট করার সময় প্রাপ্ত টোকেনটি সার্ভারের দ্বারা যাচাই করা হবে।


Security Best Practices with Anti-forgery Tokens


  1. Always Use Anti-forgery Tokens for Form Submissions: সবসময় ফর্ম সাবমিট করার সময় Anti-forgery টোকেন ব্যবহার করুন। বিশেষ করে যখন ব্যবহারকারী এমন ফর্ম পূরণ করছে যা ডেটা সাবমিট করে বা কোনো পরিবর্তন আনে।
  2. Use [ValidateAntiForgeryToken] Attribute: Action Method এর উপর [ValidateAntiForgeryToken] অ্যাট্রিবিউট ব্যবহার করুন, যাতে নিশ্চিত করা যায় যে সঠিক টোকেন রিটার্ন হচ্ছে।
  3. Implement Anti-forgery in AJAX Requests: AJAX রিকোয়েস্টের ক্ষেত্রেও Anti-forgery টোকেন ব্যবহার করা উচিত। এটি করার জন্য, টোকেনটি JavaScript মাধ্যমে পাঠানো হয়। এখানে RequestVerificationToken নামক টোকেনটি হেডারে যোগ করা যায়।

    উদাহরণ:

    $.ajax({
        url: '/your-endpoint',
        type: 'POST',
        data: { data: 'value' },
        headers: { 'RequestVerificationToken': $('input[name="__RequestVerificationToken"]').val() },
        success: function(response) { /* Handle response */ }
    });
    
  4. Enable Anti-forgery Globally: আপনি যদি চান যে সব রিকোয়েস্টে Anti-forgery টোকেন চেক করা হোক, তবে আপনি Startup.cs ফাইলে services.AddAntiforgery() ব্যবহার করে এটি গ্লোবালি সক্ষম করতে পারেন।

সারাংশ


Anti-forgery Tokens হল একটি গুরুত্বপূর্ণ সিকিউরিটি মেকানিজম, যা CSRF আক্রমণ থেকে ওয়েব অ্যাপ্লিকেশনকে সুরক্ষা প্রদান করে। এটি ব্যবহারকারীর সেশন এবং রিকোয়েস্টের নিরাপত্তা নিশ্চিত করে, যাতে শুধুমাত্র বৈধ রিকোয়েস্টগুলি গ্রহণ করা হয়। Anti-forgery টোকেন ব্যবহার করলে, ওয়েব অ্যাপ্লিকেশন নিরাপদে এবং আক্রমণকারীদের হাত থেকে সুরক্ষিত থাকে।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion